#define _CRT_SECURE_NO_WARNINGS 1
// 让vs编译器的警告失效，加在源文件的第一行

#include <stdio.h>

// 生命周期
// 局部变量的生命周期是：进入作用域生命周期开始，出作用域生命周期结束。
// 全局变量的生命周期是：整个程序的生命周期。

// int main()
// {
//     // 未声明的标识符
//     // extern是声明外部符号的。
//     // 全局变量的作用于是整个工程
//     extern int g_val;
//     printf("g_val = %d \n",g_val);
//     return 0;
// }

int main()
{
    // 计算2个数的和
    int num1,num2 = 0;
    // 输入数据-使用输入函数scanf
    // &取地址符号。把输入的数字放到对应的地址。
    // scanf是C语言提供的。
    // 使用vs编译器时会建议使用scanf_s，其不是标准C语言提供的,是VS编译器提供的。不建议使用，程序不具有跨平台性/可移植性。
    scanf("%d%d",&num1,&num2);
    int sum = 0;
    // c语言语法规定，变量要定义在当前代码块的最前面。
    sum = num1 + num2;
    printf("%d\n",num1+num2);
    printf("sum = %d\n",sum);
    return 0;
}


// int main()
// {
//     {
//         int a = 10;
//     }
//     printf("%d\n",a); //此处不可用，编译时报错
//     return 0;
// }


// int num2 = 20; // 全局变量-定义在代码块({})之外的变量
// int main ()
// {
//     int num1 = 10; // 局部变量-定义在代码块({})内部的变量
//     int num2 = 11; // 此处也是局部变量
//     // 局部变量和全局变量的名字不要相同，容易产生误会，产生bug
//     // 当局部变量和全局变量的名字相同时，局部变量优先
//     printf("%d \n",num2); // 此处输出10
//     return 0;
// }


// int main ()
// {
//     short age = 20; // 申请2个byte(16个bit)保存数字20。
//     float weight = 95.6f; // 如果不带f，相当于把双精度的值赋值给单精度的变量，编译时会有警告，可能会有精度丢失。
//     return 0;
// }


// int main()
// {
//     // 字节，计算机中的单位
//     // bit 比特位  --  最小单位 ,只存一个二进制位0或1。一个电信号位，正电或负电。
//     // byte 字节，即8个bit。
//     // kb
//     printf("%d \n",sizeof(char));  // 1个字节，8个bit 比特位。
//     printf("%d \n",sizeof(short)); // 2   
//     printf("%d \n",sizeof(int));  // 4个字节，32个bit位 2^32 - 1。
//     printf("%d \n",sizeof(long));  // 4
//     printf("%d \n",sizeof(long long)); // 4/8 c语言标准规定 sizeof(long) >= sizeof(int), 取决于平台
//     printf("%d \n",sizeof(float));  // 4
//     printf("%d \n",sizeof(double)); // 8
//     return 0;
// }